#ifndef MEMMORYHANDLER_H
#define MEMMORYHANDLER_H

#define NEW new(__LINE__, __FILE__)
#define DELETE(p) delete(p,__LINE__, __FILE__)
#define DELETE_ARR(p) delete[](p,__LINE__, __FILE__)

#include <map>

struct MEM_INFO
	{
		size_t memSize;
		char *fileName;
		int line;
		bool isArray;

	};

class MemmoryHandler
{
private:
	//BEACOUSE IS SINGLETON
	MemmoryHandler(void);
	static MemmoryHandler *g_pkInstance;

public:
	static MemmoryHandler *GetInstance();
	
	~MemmoryHandler(void);

	void registerIntoMemMap(void *pointer, size_t size, bool isArray, int line, char *file);
	void unregisterOfMemMap(void *p);
	
	//hacer una funcion para mostrar la data; recorrer el mapa y hacer un print de los leaks (o sea, lo q me queda en el mapa)
	void printMemMap();

private:
	std::map<void *, MEM_INFO> m_pkMemMap;
};

#endif